package com.yindian.cos.easy.security.authentication.login.social.core;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.util.Date;

/**
 * 根据第三方平台抽象出来的公用实体
 * 如果实现了UserInfoStore，将会讲此用户存储到指定的地方，第二次登录不会在要求用户注册了
 *
 * @author zhangchuanhao
 * @create 2018/11/20 14:53
 */
@Data
@NoArgsConstructor
public class UserInfo {

    /**
     * 业务系统的用户id
     */
    @JsonProperty("user_id")
    @NotBlank(message = "user_id不能为空")
    private String userId;

    /**
     * 提供方 qq 微信 微博
     */
    @NotBlank(message = "provider不能为空")
    private String provider;

    /**
     * 第三方系统的用户唯一身份标识
     */
    @JsonProperty("open_id")
    @NotBlank(message = "open_id不能为空")
    private String openId;

    /**
     * 用户昵称
     */
    @JsonProperty("nick_name")
    @NotBlank(message = "nick_name不能为空")
    private String nickName;

    /**
     * 用户头像
     */
    @JsonProperty("img_url")
    private String imgUrl;

    /**
     * token
     */
    @JsonProperty("access_token")
    @NotBlank(message = "access_token不能为空")
    private String accessToken;

    /**
     * 创建时间
     */
    @JsonProperty("create_time")
    private Date createTime;

    public UserInfo(String provider, String openId, String nickName, String imgUrl, String accessToken) {
        this.provider = provider;
        this.openId = openId;
        this.nickName = nickName;
        this.imgUrl = imgUrl;
        this.accessToken = accessToken;
    }
}
